package com.ebupt.migu.music.unifyAudit.pojo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Getter;

import java.util.Arrays;

/**
 * 审核状态枚举
 * @author tz
 */
@JsonFormat(
        shape = JsonFormat.Shape.OBJECT
)
@Getter
public enum AuditStatus {
    /*
     * 数据未送审
     */
    NOT_REPORT("NOT_REPORT","数据未送审"),
    /*
     * 机审任务已创建
     */
    PROVISIONING("PROVISIONING","初始状态"),
    /*
     * 机审任务排队中
     */
    PREPROCESSING("PREPROCESSING","预处理状态"),
    /*
     * 机审任务已取消
     */
    CANCELLED("CANCELLED","取消"),
    /*
     * 机器审核进行中
     */
    PROCESSING("PROCESSING","机器审核中"),
    /*
     * 审核结束，可以查询审核结果
     */
    SUCCESS("SUCCESS","机器审核结束"),
    /*
     * 审核失败，可以查询失败错误原因
     */
    FAILED("FAILED","机器审核异常"),
    /*
     * 机器审核判定为违规
     */
    REJECT("REJECT","机器审核拒绝"),
    /*
     * 机器审核判定为正常
     */
    NORMAL("NORMAL","机器审核通过"),
    /*
     * 机器审核判定为嫌疑
     */
    REVIEW("REVIEW","机器审核嫌疑"),
    /*
     * 正在进行人工审核
     */
    ARTIFICIAL_PROCESSING("ARTIFICIAL_PROCESSING","人工审核中"),
    /*
     * 人工审核通过
     */
    ARTIFICIAL_PASS("ARTIFICIAL_PASS","人工审核通过"),
    /*
     * 人工审核拒绝
     */
    ARTIFICIAL_REFUSE("ARTIFICIAL_REFUSE","人工审核拒绝");
    /**
     * 编码
     */
    private String code;
    /**
     * 描述
     */
    private String name;

    public String getCode() {
        return code;
    }

    public String getName() {
        return name;
    }

    AuditStatus(String code, String name) {
        this.code = code;
        this.name = name;
    }

    public static String getCodeByName(String name){
        return Arrays.stream(AuditStatus.values()).filter(e -> e.getName().equals(name)).findFirst().get().getCode();
    }

    public static String getNameByCode(String code){
        return Arrays.stream(AuditStatus.values()).filter(e -> e.getCode().equals(code)).findFirst().get().getName();
    }

}
